package com.stefanini.pe.bbva.mbl.in.dao;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.stefanini.pe.bbva.mbl.carga.in.to.Feriado;
import com.stefanini.pe.bbva.mbl.in.dao.iface.FeriadoDAO;

import org.apache.log4j.Logger; 

public class FeriadoDAOImpl extends SqlMapClientDaoSupport implements FeriadoDAO {
	private static Logger logger = Logger.getLogger(FeriadoDAOImpl.class);
	
    public FeriadoDAOImpl() {
        super();
    }

    public int deleteByPrimaryKey(BigDecimal idferiado) {
        Feriado key = new Feriado();
        int rows = 0;
        
        logger.info("Inicio");
        
        key.setIdferiado(idferiado);
        rows = getSqlMapClientTemplate().delete("DIAFERIADO.ibatorgenerated_deleteByPrimaryKey", key);
        
        logger.info("Fin");
        
        return rows;
    }
    
    public int deleteByPeriodo(BigDecimal idferiado) {
        Feriado key = new Feriado();
        int rows = 0;
        
        logger.info("Inicio");
        
        key.setPeriodo(idferiado);
        rows = getSqlMapClientTemplate().delete("DIAFERIADO.ibatorgenerated_deleteByPeriodo", key);
        
        logger.info("Fin");
        
        return rows;
    }

    public void insert(Feriado record) {
    	logger.info("Inicio");
    	
        getSqlMapClientTemplate().insert("DIAFERIADO.ibatorgenerated_insert", record);
        
        logger.info("Fin");
    }

    public void insertSelective(Feriado record) {
    	logger.info("Inicio");
    	
        getSqlMapClientTemplate().insert("DIAFERIADO.ibatorgenerated_insertSelective", record);
        
        logger.info("Fin");
    }

    public Feriado selectByPrimaryKey(BigDecimal idferiado) {
        Feriado key = new Feriado();
        Feriado record = null;
        
        logger.info("Inicio");
        
        key.setIdferiado(idferiado);
        record = (Feriado) getSqlMapClientTemplate().queryForObject("DIAFERIADO.ibatorgenerated_selectByPrimaryKey", key);
        
        logger.info("Fin");
        
        return record;
    }

    public int updateByPrimaryKeySelective(Feriado record) {
        int rows = 0;
        
        logger.info("Inicio");
        
        rows = getSqlMapClientTemplate().update("DIAFERIADO.ibatorgenerated_updateByPrimaryKeySelective", record);
        
        logger.info("Fin");
        
        return rows;
    }

    public int updateByPrimaryKey(Feriado record) {
        int rows = 0;
        
        logger.info("Inicio");
        
        rows = getSqlMapClientTemplate().update("DIAFERIADO.ibatorgenerated_updateByPrimaryKey", record);
        
        logger.info("Fin");
        
        return rows;
    }
    
    public int selectSequence() {
    	int secuencia = 0;
    	
    	logger.info("Inicio");
    	
    	secuencia = Integer.parseInt((String)getSqlMapClientTemplate().queryForObject("DIAFERIADO.generated_llavePrimaria",""));
    	
    	logger.info("Fin");
    	
		return secuencia;
	}
    
    public List selectByCriteria(Feriado feriado)  {
        List records = null;
        
        logger.info("Inicio");
        
        records = (List) getSqlMapClientTemplate().queryForList("DIAFERIADO.ibatorgenerated_selectByCriteria",feriado);
        
        logger.info("Fin");
        
		return records;
	}

	public List selectAll() {
	    List records = null;
	      
	    logger.info("Inicio");  
	      
	    records = (List) getSqlMapClientTemplate().queryForList("DIAFERIADO.ibatorgenerated_selectAll",null);
	    
	    logger.info("Fin");
	      
		return records;
	}
	
	public List selectActual() {
	    List records = null;
	    
	    logger.info("Inicio");
	    
	    records = (List) getSqlMapClientTemplate().queryForList("DIAFERIADO.ibatorgenerated_selectActual",null);
	    
	    logger.info("Fin");
	      
	    return records;
	}
	
	public int verificarPeriodo(BigDecimal anno) {
		Feriado feriado = new Feriado();
		
		logger.info("Inicio");
		
		feriado.setPeriodo(anno);        
		getSqlMapClientTemplate().queryForObject("DIAFERIADO.ibatorgenerated_verifica_periodo", feriado);
		
		logger.info("Fin");
        
        return feriado.getOut_anno();
    }
	
	public int verificarPeriodoFeriado(Date fechaInicio, Date fechaFin, BigDecimal periodo) {
		logger.info("Inicio verificarPeriodoFeriado()");
		try{
			Feriado feriado = new Feriado();
			feriado.setFecInicio(fechaInicio);
			feriado.setFecFin(fechaFin);
			feriado.setPeriodo(periodo);
			/*
			HashMap<String,Object> map = new HashMap<String,Object>();
			map.put("p_fecha_inicio", fechaInicio);
			map.put("p_fecha_fin", fechaFin);
			map.put("p_periodo", 0);
			*/
			getSqlMapClientTemplate().queryForObject("DIAFERIADO.verificaPeriodoFeriado", feriado);
			return feriado.getOut_anno();
		}catch(Exception e){
			e.printStackTrace();
			return new Integer("-1");
		}		
    }
}